home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / qwik40.arc / QINIT.DOC < prev    next >
Text File  |  1991-01-09  |  16KB  |  295 lines

  1. { Qinit.doc - documentation for QWIK Qinit                  ver 4.0, 12-01-87 }
  2.  
  3.   This file will help you figure out how the new IBM PS/2 systems are config-
  4.   ured as well as original equipment.  First, it is helpful to have a list of 
  5.   all the possible Alphanumeric (A/N or text) modes.  QWIK was not designed 
  6. | for the All Points Addressable (APA or graphics) modes.  Qinit detects dual 
  7. | monitors and saves both the active and alternate display device codes.
  8.  
  9.             TABLE 1:  Hardware Specific Video Mode Characteristics
  10. Mode Format Segment Display Box  MDA CGA EGA MCGA VGA PCjr PCC 3270 HGC MaxPage
  11. ---- ------ ------- ------- ---- --- --- --- ---- --- ---- --- ---- --- -------
  12. 0,1  40x25  B800:0  320x200 8x8       x   x   x    x   x    x              7
  13.                     320x350 8x14          x        x                       7
  14.                     320x400 8x16              x                            7
  15.                     360x400 9x16                   x                       7
  16. 2,3  80x25  B800:0  640x200 8x8       x                x    x              3
  17.                     640x200 8x8           x        x                       7 *
  18.                     640x350 8x14          x        x                       7 *
  19.                     640x400 8x16              x                            7
  20.                     720x350 9x14                                x          0 +
  21.                     720x400 9x16                   x                       7
  22. 7    80x25  B000:0  720x350 9x14  x                         x   x    x     0 
  23.                     720x350 9x14          x        x                       7 *
  24.                     720x400 9x16                   x                       7
  25.                     640x200 8x8                             x              3
  26.  
  27. Legend:
  28.   Format  - Characters per row by the number of rows in the data area.
  29.   Segment - Address of the first character on page 0 of the display buffer.
  30.   Display - The pixel resolution for the data area excluding the border, 
  31.             horizontal by vertical.
  32.   Box     - The pixel resolution for each character, horizontal by vertical.
  33.   MDA     - Monochrome Display and Printer Adapter
  34.   CGA     - Color Graphics Adapter 
  35.   EGA     - Enhanced Graphics Adapter
  36.   PGC     - Professional Graphics Controller
  37.   MCGA    - Multi-Color Graphics Array
  38.   VGA     - Video Graphics Array
  39.   PCjr    - PC Junior
  40.   PCC     - PC Convertible
  41.   HGC     - Hercules Graphics Cards - HGC, HGC Plus, and InColor Card
  42.   3270    - All IBM 3270 PC adapters
  43.   MaxPage - 0-based highest page number; e.g. 7 means there are 8 pages.
  44.   MD      - 5151 Monochrome Display
  45.   CD      - 5153 Color Display
  46.   ECD     - 5154 Enhanced Color Display
  47.  
  48. Notes:
  49.   1. The 0 and 2 modes suppress color burst only on composite displays (not 
  50.      RGB) only for CGA and EGA.
  51.   2. The PS/2 model 25 and 30 have an integrated MCGA.  The model 50 and 
  52.      above have an integrated VGA.
  53.   3. The 8514 High Content Color Display along with the 8514/A adapter 
  54.      produces a superset of the VGA for APA, but there is no differences in 
  55.      the A/N modes to the VGA when the adapter is in "VGA" mode.  See IBM 
  56.      documentation for Advanced Function Mode.
  57.   4. Reduced MaxPage to 3 if EGA only has 64K graphics memory installed for 
  58.      modes marked "*".  MaxPage of 7 is for 128K or more.
  59.   5. The PCC can have either an alternate MDA or CGA.  The LCD (model 5140) 
  60.      can emulate either the MDA or CGA modes, but the MDA mode is 640x200.
  61.   6. I currently have no information on the PGC.
  62.   7. To relieve cursor routine programming due to the multiple character box 
  63.      sizes, the VGA has a cursor emulation mode.  Qinit turns on the mode 
  64.      if PS/2 equipment is detected.  See CURSOR.DOC for emulation notes.
  65. | 8. On the 3270 PC, dual monitors are not possible as they use the same 
  66. |    physical buffer space.  Qinit will determine if more than just page 0 
  67. |    is available for color displays.  Unless there is a special adapter, 
  68. |    there is only page 0.
  69.  
  70.   Display Combination Code (DCC) - The PS/2 video BIOS has a new function 
  71.   that simplifies equipment detection called the Read/Write Display 
  72.   Combination Code.  Using interrupt $10 with AH = $1A00, the call will 
  73.   return the Active Display Device in BL and the Alternate Display Device in 
  74.   BH.  If the function is supported, it also returns $1A to AL.  The possible 
  75.   Display Device codes (as assigned by IBM) are: 
  76.  
  77.      TABLE 2:  Display Combination Code
  78.      CODE  DESCRIPTION                       QWIK40 Constant
  79.      ----  --------------------------------  ---------------
  80.      $00   No display                        NoDisplay
  81.      $01   MDA with 5151 monochrome display  MdaMono
  82.      $02   CGA with 5153/4 color display     CgaColor
  83.      $03   reserved                          DCC3
  84.      $04   EGA with 5153/4 color             EgaColor
  85.      $05   EGA with 5151 monochrome          EgaMono
  86.      $06   PGC with 5175 color               PgcColor
  87.      $07   VGA with analog monochrome        VgaMono
  88.      $08   VGA with analog color             VgaColor
  89.      $09 to $0A - reserved                   DCC9,DCC10
  90.      $0B   MCGA with analog monochrome       McgaMono
  91.      $0C   MCGA with analog color            McgaColor
  92.      $0D to $FE - reserved                   n/a
  93.      $FF   unknown                           Unknown
  94.  
  95.   Conforming to DCC - No results are obtained for the DCC on anything other 
  96.   than PS/2 equipment.  However, to be consistent, Qinit was reprogrammed 
  97.   to conform to the DCC for ALL equipment.  To see if a CGA is in use, 
  98.   simply check to see if ActiveDispDev=CgaColor.  Qinit only sets the 
  99.   parameters for the active display.  Although the alternate code is saved, 
  100.   it is only for testing purposes.  If you change text modes in a running 
  101.   program, Qinit should be executed again. 
  102.  
  103.   HavePS2 - Qinit sets HavePS2 to true if the DCC is supported.  This means 
  104.   that the program has detected some kind of PS/2 equipment whether it is a 
  105.   standard Model 30, a PS/2 Display Adapter on an IBM XT, or the like.  It 
  106.   also means that either MCGA or VGA is present, but not necessarily 
  107.   active.  To know which, just check the DCC.
  108.  
  109. | Have3270 - If Qinit detects 3270 PC equipment/software, this variable is 
  110. | set to true.  In addition, the ActiveDispDev is either MdaMono or 
  111. | CgaColor.  Note: There may or may not be graphics capability in either 
  112. | case; Qinit is not meant to detect graphics.  ActiveDispDev3270 may be 
  113. | one of the following:
  114.  
  115. |    TABLE 3:  3270 PC Display Combination Code
  116. |    CODE  MONITOR        ADAPTER                    QWIK40 Constant
  117. |    ----  -------------- -------------------------  ---------------
  118. |    $00   5151 or 5272   for 5151 or 5272           
  119. |    $01   3295           for 3295
  120. |    $02   5151 or 5272   for 5151 or 5272 plus
  121. |                          XGA graphics
  122. |    $03   5279           3270 PC G 
  123. |    $04   5379 C01       3270 PC GX 
  124. |    $05   5379 M01       3270 PC GX 
  125. |    $06   Reserved
  126. |    $07   Reserved
  127. |    $FF   Unknown, not a 3270 PC                    Unknown
  128.  
  129.   EGA Switches - By checking the value of this byte, you can determine the 
  130.   monitor connected to the EGA, the alternate video system, and the start 
  131.   up default.  The byte is a copy of how the dip switches are set on the 
  132.   card where on=0 and off=1.  The primary is the default.  When the ECD is 
  133.   set for 640x200, it is emulating the CD including the cursor mode.
  134.  
  135.        TABLE 4: EGA dip switch configuration     
  136.        SWITCH  VALUE  PRIMARY               SECONDARY
  137.        ------  -----  --------------------  -------------------
  138.        0000    0      MDA + MD              EGA + CD - 40x25   
  139.        0001    1      MDA + MD              EGA + CD - 80x25   
  140.        0010    2      MDA + MD              EGA + ECD (640x200)
  141.        0011    3      MDA + MD              EGA + ECD (640x350)
  142.        0100    4      CGA + CD - 40x25      EGA + MD           
  143.        0101    5      CGA + CD - 80x25      EGA + MD           
  144.        0110    6      EGA + CD - 40x25      MDA + MD           
  145.        0111    7      EGA + CD - 80x25      MDA + MD           
  146.        1000    8      EGA + ECD (640x200)   MDA + MD           
  147.        1001    9      EGA + ECD (640x350)   MDA + MD           
  148.        1010   10      EGA + MD              CGA + CD - 40x25   
  149.        1011   11      EGA + MD              CGA + CD - 80x25   
  150.  
  151.   EGA Information - The byte located at $0040:$0087 has the following 
  152.   information when the EGA (or VGA) is present:
  153.  
  154.        TABLE 5: EGA information
  155.        BITS  DESCRIPTION
  156.        ----  -------------------------------------------------
  157.        7     (0) Clear, (1) Keep video data after mode set
  158.        6,5   (00) 64k, (01) 128k, (10) 192k, (11) 256k, memory
  159.        4     Reserved
  160.        3     (0) EGA active, (1) EGA not active
  161.        2     (0) Disable,    (1) Enable wait-for-display
  162.        1     (0) CD/ECD,     (1) MD attached
  163.        0     (0) Active,     (1) Inactive CD emulation
  164.  
  165.   PCC Exceptions - Since the PCC also does not support the DCC, a separate
  166.   code is used.  If the 5140 LCD is used in mode 7, the Active Display 
  167.   Device is set to MdaMono which is close enough.  This set up can be 
  168.   verified by testing if MaxPage=3.  The alternate display is found by using 
  169.   interrupt $10 with AH=$15.  The result is saved in AltDispDevPCC.  Of 
  170.   course the variable is undefined if a PCC is not used.  The possible types 
  171.   are:
  172.  
  173.      TABLE 6: PC Convertible Alternate Display Adapters
  174.      VARIABLE        MODEL  DESCRIPTION
  175.      -------------   -----  --------------------
  176. |    AltDispDevPCC = $   0   No alternate adapter
  177.                    = $5140   LCD
  178.                    = $5153   CGA type
  179.                    = $5151   Monochrome type
  180.  
  181. | Hercules - Hercules cards are also detected.  It is assumed that they are 
  182. | installed as the default display device.  When detected, the DCC will be 
  183. | set to MdaMono.  The tests for the Hercules cards are the ones 
  184. | recommended by Hercules Computer Technology, which also admits that 
  185. | sometimes the tests will fail during multi-tasking activity.  Hercules 
  186. | clones may not be detected by these test, but the DCC will be correct.
  187.  
  188. |    TABLE 7:  Hercules Model Code
  189. |    CODE  DESCRIPTION                       QWIK40 Constant
  190. |    ----  --------------------------------  ---------------
  191. |     0    No Hercules card                  NoHerc
  192. |     1    HGC                               HgcMono
  193. |     2    HGC Plus                          HgcPlus
  194. |     3    Hercules InColor Card             HercInColor
  195.  
  196. | Dual Monitors - Qinit makes an attempt to detect for a second monitor by 
  197. | several means.  If no other cards like EGA or VGA are found, the actual 
  198. | video buffers, $B000 or $B800, are checked for a non-destructive 
  199. | write/read.  If the buffer exists, an alternate display device is 
  200. | confirmed.  However, one test of a Qega+ card connected to a color 
  201. | monitor showed an erratic response to direct test of the mono buffer when 
  202. | no second card was actually installed.
  203.  
  204.   System Identification - To get both the model and submodel, you must use 
  205.   interrupt $15 with AH=$C0 which only works on some computers.  If the 
  206.   carry flag is set on exit, then that interrupt is not supported, because 
  207.   there's no submodel number.  The alternative is to get the basic computer 
  208.   model by directly accessing the byte in memory at $F000:$FFFE.  The 
  209.   possible values are:
  210.  
  211.      TABLE 8:  System Identification Codes
  212.      SysID Sub-Model  SYSTEM              
  213.      ----- ---------  ---------------------------
  214.       $FF    n/a      IBM PC
  215.       $FE    n/a      IBM PC XT
  216.       $FD    n/a      IBM PCjr
  217.       $FC    n/a      IBM PC AT (6 MHz, 01/10/84)
  218.              $00      IBM PC AT (6 MHz, 06/10/85)
  219.              $01      IBM PC AT (8 MHz, 11/15/85)
  220.              $02      IBM PC XT (286)
  221.              $04      IBM PS/2 model 50
  222.              $05      IBM PS/2 model 60
  223.       $FB    $00      IBM PC XT (256/640)
  224.       $FA    $00      IBM PS/2 model 30
  225.              $01      IBM PS/2 model 25
  226.       $F9    $00      IBM PC Convertible
  227.       $F8    $00      IBM PS/2 model 80 (16 MHz)
  228.              $01      IBM PS/2 model 80 (20 MHz)
  229.               ?       IBM PS/2 model 70
  230.  
  231.  
  232.   The essential variables set by Qinit are:
  233.  
  234.     VARIABLE      DESCRIPTION
  235.     ------------  ---------------------------------------------------------
  236. |   Page0seg      Segment for the base page, page 0.  This value may be
  237. |                   changed for multi-tasking environments.
  238.     Qseg          Segment for Q writing which is altered when changing
  239.                     pages.
  240. |   Qsnow         Wait-for-retrace (snow) while Q writing.
  241.     MaxPage       Maximum possible 0-based page number.
  242.  
  243.  
  244.   The other variables set or located by Qinit are for your reference to 
  245.   help make decisions in your programs:  
  246.  
  247.     VARIABLE      DESCRIPTION
  248.     ------------  ---------------------------------------------------------
  249.     VideoMode     Directly accesses the video mode code.
  250. |   VideoPage     Directly accesses the video page number.
  251.     EgaRows       0-based number of rows on the screen for EGA or VGA.
  252.     EgaFontSize   1-based number of horizontal scan lines per character for
  253.                     EGA or VGA.
  254.     EgaInfo       (Described above)
  255.     EgaSwithces   (Described above)
  256.     CRTcolumns    1-based number of columns on the screen for any card.
  257. |   CRTcols       Global variable equal to CRTcolumns.
  258. |   CRTrows       1-based number of rows on the screen for any card.
  259.     HavePS2       Detects the presence of some type of IBM PS/2 equipment.
  260. |   Have3270      Detects the presence IBM 3270 PC equipment/software.
  261. |   CardSeg       Video buffer address the video "card".
  262. |   CardSnow      Requirement for wait-for-retrace for the video "card".
  263.     SystemID      Code for the IBM computer in use.
  264.     SubModelID    Code for the sub-model of the IBM computer in use.
  265. |   ActiveDispDev Code for the Active Display Device.
  266. |   AltDispDev    Code for the Alternate Display Device.
  267. |   AltDispDevPCC Code for the Alternate Display adapter on the PC 
  268.                     Convertible.
  269. |   ActiveDispDev3270 Code for the Active Display Device on the 3270 PC.
  270.     
  271.   CGA Snow - A recent discovery has shown that CGA cards do not need wait-
  272.   for-retrace in 40 column modes 0 and 1.  Qinit was programmed to 
  273.   accommodate this.  For other hardware, you can change Qsnow to suit your 
  274.   needs, but CardSnow should be left unchanged to save what Qinit detected. 
  275.  
  276.   References - For more information on the new IBM PS/2 system, you can get 
  277.   the "IBM BIOS Interface Technical Reference Manual".  Other references 
  278.   include:
  279.     
  280.      IBM Personal System/2 Seminar Proceedings:
  281.        Volume 5, Number 2, Displays and Adapters, publication # G360-2678.
  282.        Volume 5, Number 4, Models 50, 60, 80, VGA, BIOS and Programming 
  283.           Considerations, publication # G360-2747.
  284.  
  285. | For more information on the IBM 3270 PC, you can get the the following 
  286. | publications:
  287. |
  288. |   "3270 PC Application Development Considerations"
  289. |   "IBM 3270 Personal Computer Programming Guide", Pub # SA23-0221
  290. |   "IBM 3270 Personal Computer Control Program Reference", Pub # GA23-0232
  291.  
  292.   As always, the above information is subject to change without notice per 
  293.   IBM.  IBM is the trademark for International Business Machines Corp. (but 
  294.   you already know that!)
  295.